MakeHand

導入

v4.0

カテゴリ

キャラクタ リギング

詳細

ボーンのジョイントの配置と方向付けにガイド オブジェクトを使用して、1 ボーンの手と指のボーン一式を作成します。 手の作成には、ガイド オブジェクトのコレクションが 2 つ必要です。指のジョイントを配置するための指のガイド オブジェクトのコレクションと、指を曲げる方向をコントロールする「ブレード」オブジェクトのコレクションの 2 つです。 指のチェインは、ボーンの Z 回転がブレードのプレーンとなるようセットアップされます。

必要に応じて、手と指にシャドウ リグをアタッチすることができます。 腕のチェイン エレメントそれぞれにシャドウ オブジェクトが作成され、そのエレメントにポーズによって拘束されます。 シャドウ リグはリグのアニメーションをプロットする際に使用できます。

スクリプト構文

oHand = MakeHand( HandParent, FingerGuideCollection, BladeGuideCollection, HandGuideCollection, [Prefix], [FingerBoneType], [ShadowType], [ShadowParent], [NegativeScale] );

戻り値

Hand JScript オブジェクトを戻します。

パラメータ

パラメータ タイプ 詳細
HandParent 文字列 新しい手の親となるオブジェクト。
FingerGuideCollection 文字列 各指の開始となる、ガイド オブジェクトのコレクション。 たとえば「LRing1」のように、コレクション内のガイド オブジェクトを 1 つ指定すると、手はジョイントが検出されなくなるまで「LRing2」、「LRing3」のようにオブジェクトを検索します。ボーンを描画するには、シーンでルートにつき 1 つ以上の追加のジョイントが検出される必要があります。
BladeGuideCollection 文字列 描画対象の指の方向を示す、ブレード オブジェクトのコレクション。 Root Guides と同じ順序でなくてはなりません。
HandGuideCollection 文字列 A collection of two objects in the order:$$$手のボーンの開始から手のボーンの終端の順に並んだ、2 ボーン オブジェクトのコレクション。
Prefix 文字列 新しい手を作成する際に、新しいオブジェクトの名前に付加するプリフィックス (例: 「L」や「R」など)。
FingerBoneType Integer 2D または 3D チェインから指のボーンを構築するオプション。

デフォルト値: 0

指定可能な値:

説明:

0 指は2Dチェインで、プリファレンスアングルは指のブレードの向きです
1 指は3Dチェインで、プリファレンスアングルはガイドのポーズです
ShadowType Integer 手にアタッチするシャドウ リグのタイプ。 シャドウ リグは、アニメーションを転送または再マップするために使用します。

デフォルト値: 0

指定可能な値:

説明:

0 影無し
1 SI|3Dスケルトンのシャドウリグ
2 XSIスケルトンのシャドウリグ
3 ヌルのシャドウリグ
4 ボックスのシャドウリグ
9 SI|3Dスケルトンハンドシャドウ(指なし)
10 XSIスケルトンハンドシャドウ(指なし)
11 ヌルハンドシャドウ(指なし)
12 ボックスハンドシャドウ(指なし)
ShadowParent 文字列 シャドウ リグ階層の親。 空の場合には、シャドウ リグは作成されません。
NegativeScale ブール チェイン上の負のスケーリング。 負のスケーリングは、左と右の手または指を対称に操作する場合に便利です。

デフォルト値: False

JScript の例

/*
        Loads the Biped Guide then generates a left 
        hand matched to the guide
*/
GetProportionalGuide("Biped_Guide", 0, 0);
var Guide    = ActiveSceneRoot.FindChild("Biped_Guide" );
var LFingers = new ActiveXObject("XSI.Collection");
var LBlades  = new ActiveXObject("XSI.Collection");
var handKeys = new Array("Pinky", "Ring", "Middle", "Index", "Thumb");
for(i=0;i<handKeys.length;i++){
        var finger = Guide.FindChild("L" + handKeys[i] + 1);
        var blade  = Guide.FindChild("L" + handKeys[i] + "_fingerBlade");
        if(finger && blade){
                LFingers.add(finger);
                LBlades.add(blade);
        }
}
var LHBone = new ActiveXObject("XSI.Collection");
LHBone.add(Guide + ".LHand");
LHBone.add(Guide + ".LHandEnd");
var LHand = makeHand(ActiveSceneRoot, LFingers, LBlades, LHBone, "L", 0, 0, null, 0);
DumpHand(LHand);
//Delete the guide
DeleteObj("B:"+Guide);
//Move hand to the origin 
var xfo
xfo = LHand.Root.Kinematics.Global.Transform;
xfo.SetTranslationFromValues(0,0,0);
LHand.Root.Kinematics.Global.Transform = xfo;
function DumpHand(inHand)
{
                logmessage ("Data in the returned hand object:");
                logmessage ("---------------------------------");
                logmessage ("HandRoot  : " + inHand.Root);
                logmessage ("HandEff   : " + inHand.Eff);
                logmessage ("#FingRoots: " + inHand.FingerRoots.count);
                for(var b=0;b<inHand.FingerRoots.count;b++)
                {logmessage (" FingerRoot" + b + ": " + inHand.FingerRoots(b));}
                logmessage ("Hidden    : " + inHand.Hidden);
                logmessage ("Envelope  : " + inHand.Envelope);
                logmessage ("Shadows   : " + inHand.Shadows);
}
//results from running this script:
//INFO : "Data in the returned hand object:"
//INFO : "---------------------------------"
//INFO : "HandRoot  : LHandRoot"
//INFO : "HandEff   : LHandEffector"
//INFO : "#FingRoots: 5"
//INFO : " FingerRoot0: LPinkyRoot"
//INFO : " FingerRoot1: LRingRoot"
//INFO : " FingerRoot2: LMiddleRoot"
//INFO : " FingerRoot3: LIndexRoot"
//INFO : " FingerRoot4: LThumbRoot"
//INFO : "Hidden    : LPinkyRoot,LPinkyEffector,LRingRoot,LRingEffector,LMiddleRoot,LMiddleEffector,LIndexRoot,LIndexEffector,LThumbRoot,LThumbEffector,LHandRoot,LHandEffector"
//INFO : "Envelope  : LPinky1,LPinky2,LPinky3,LRing1,LRing2,LRing3,LMiddle1,LMiddle2,LMiddle3,LIndex1,LIndex2,LIndex3,LThumb1,LThumb2,LThumb3,LHand"
//INFO : "Shadows   : undefined"

関連項目

MakeArm